﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ModeloMagiPack.Entidades;
using DALMagiPack.Funcionalidad;

namespace BLLMagiPack.Managers
{
    public class BLLCondicionVenta:BLLMagiPack
    {
        public void CrearCondicionVenta(CondicionVenta nuevoCondicion)
        {
            DALMagiPack<CondicionVenta> dalCondicion = new DALMagiPack<CondicionVenta>();
            dalCondicion.Insertar(nuevoCondicion);
        }

        public void EliminarCondicion(CondicionVenta condicion)
        {
            DALMagiPack<CondicionVenta> dalCondicion = new DALMagiPack<CondicionVenta>();

            //ARREGLAR LO SIGUIENTE PARA QUE HAGA LA VALIDACION CON ORDENES DE FABRICACION SI QUIERE ELIMINAR UNA CONDICION QUE ESTA ASIGNADA.

            //if (new BLLCheque().TraerChequesPorBanco(condicion.IdCondicionVenta).Count > 0)
              //  throw new BLLMagiPackException(string.Format("No se puede eliminar. Hay ordenes de fabricación asignados a la condicion de venta {0}", condicion.Nombre));
            //else
            dalCondicion.Eliminar(condicion);
        }

        public void ModificarCondicionVenta(CondicionVenta condicion)
        {
            DALMagiPack<CondicionVenta> dalCondicion = new DALMagiPack<CondicionVenta>();
            dalCondicion.Modificar(condicion);
        }

        public List<CondicionVenta> TraerCondiciones()
        {
            DALMagiPack<CondicionVenta> dalCondiciones = new DALMagiPack<CondicionVenta>();

            return dalCondiciones.Traer(new CondicionVenta(), new List<Filtro>());
        }

        public List<CondicionVenta> TraerCondiciones(string nombre)
        {
            DALMagiPack<CondicionVenta> dalCondicionVenta = new DALMagiPack<CondicionVenta>();

            if (nombre != null)
            {
                CondicionVenta filtro = new CondicionVenta() { Nombre = nombre };
                List<Filtro> opciones = new List<Filtro>() { new Filtro() { Columna = NombresColumnas.Nombre, Tipo = TipoFiltro.Like } };

                return dalCondicionVenta.Traer(filtro, opciones);
            }
            else
                return dalCondicionVenta.Traer(new CondicionVenta(), new List<Filtro>());
        }

        public CondicionVenta TraerCondicion(int? idCondicionVenta)
        {
            DALMagiPack<CondicionVenta> dalCondiciones = new DALMagiPack<CondicionVenta>();
            CondicionVenta filtro = new CondicionVenta() { IdCondicionVenta = idCondicionVenta };
            List<Filtro> filtros = new List<Filtro>() { new Filtro() { Columna = NombresColumnas.IdCondicionVenta, Tipo = TipoFiltro.Equal } };

            return dalCondiciones.Traer(filtro, filtros).FirstOrDefault();
        }
    }
}
